-- CALC_CAVE_BONUS_27

-- 计算怪物巢穴副本奖励
-- @param user    玩家对象
-- @param args    奖励计算参数
-- @param grade   副本难度
-- @param layer   地牢层数
return function(user, args, grade, layer)
    -- caution：如果修改该公式，服务器请一并修改
    local randSeed  = DungeonM.getRandSeed("DUNGEON_CAVE27");
    local bonus;
    local classId
    local arr = {};
    arr    = { { ["class_id"] = {8075,8076,8077,8078,8079,8080,8081,8082,8083,8084,8085,8086,8087,8088,8089,8090,8091,8092,}, ["amount"] = 1, ["ratio"] = 50, }, -- 套装
               { ["class_id"] = { 7196, 7197, }, ["amount"] = 1, ["ratio"] = 25, },               -- 熔岩火棘果、被污染的野猪肉
               { ["class_id"] = { 7198, 7199, 7200, 7201, }, ["amount"] = 1, ["ratio"] = 25, },  -- 器官标本或肠道石
             };
    local ret = {};
    bonus = fetchElemBySeed(arr, randSeed);
    classId = FormulaM.invoke("FETCH_BY_RAND", bonus["class_id"], randSeed);

    -- 如果抽取到肠道石则需要判断是否已经获得足够数量了
    -- 如可获取的数额已经用完，则随机抽取器官标本
    if classId == 7201 then
        if 3 <= DungeonServiceM.getItemStat(7201) then
            classId = FormulaM.invoke("FETCH_BY_RAND", { 7198, 7199, 7200, }, randSeed);
        end
    end
    table.insert(ret, { 1, classId, bonus["amount"], });

    return ret;
end